from pathlib import Path
from PIL import Image, ImageOps, ImageEnhance

def convert_images_to_jpeg(directory, quality=95):
    """
    将指定目录中的所有图片转换为JPEG格式，并控制输出图片的质量。

    :param directory: 图片所在的目录路径
    :param quality: JPEG图片的质量，范围是0-95，默认是95
    """
    # 将目录路径转换为Path对象
    directory_path = Path(directory)
    
    # 遍历目录中的所有文件
    for file_path in directory_path.iterdir():
        # 检查文件是否是图片文件
        if file_path.is_file() and file_path.suffix.lower() in {'.png', '.bmp', '.gif', '.tiff'}:
            try:
                # 打开图片
                with Image.open(file_path) as img:
                    # 确保图片是RGB模式
                    if img.mode != 'RGB':
                        img = img.convert('RGB')
                                     
                    # 构建输出文件路径
                    output_path = file_path.with_suffix('.jpg')
                    
                    # 获取图片的宽度和高度
                    img_width, img_height = img.size
                    
                    # 检查图片宽度是否大于等于1294像素
                    if img_width >= 1300:
                        # 截取图片的宽度从598像素到1294像素，高度不变
                        cropped_img = img.crop((598, 0, 1300, img_height))
                        
                        # 无损放大截取后的图片到A4尺寸（2480x3508像素）
                        target_width = 2480  # A4宽度
                        target_height = 3508  # A4高度
                        resized_img = ImageOps.fit(cropped_img, (target_width, target_height), method=Image.LANCZOS)
                        
                        # 保存为JPEG格式，并设置质量
                        resized_img.save(output_path, 'JPEG', quality=quality)
                        print(f"Converted {file_path.name} to {output_path.name}")
                    else:
                        print(f"Skipped {file_path.name} because its width is less than 1294 pixels.")
            except Exception as e:
                print(f"Failed to convert {file_path.name}: {e}")

# 示例使用
directory_path = Path(r'D:\Documents\Downloads\一鑫 书链试卷下载器 V3.1\pic\口算心算快速算-四年级-数学（RJ）')
quality_level = 95  # 你可以调整这个值来控制输出图片的质量
convert_images_to_jpeg(directory_path, quality_level)
